package leetcode.year2021.month12;

//11. 盛最多水的容器
public class _03_4MaxArea11 {
  /**
   * 双指针向内缩进，如果当前左指针小于右指针，则说明左指针为边界时，自身已经为短板，没有更大值了，缩进之
   * @param height
   * @return
   */
  public int maxArea(int[] height) {
    int hn = height.length;
    int left = 0;
    int right = hn-1;
    int maxArea = 0;

    while (left < right){
      maxArea = Math.max(maxArea, (right-left) * Math.min(height[left],height[right]));
      if (height[left] < height[right]){
        left++;
      } else {
        right--;
      }
    }

    return maxArea;
  }
  /**
   * 11. 盛最多水的容器
   * 给你 n 个非负整数 a1，a2，...，an，每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线，垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线，使得它们与 x 轴共同构成的容器可以容纳最多的水。
   *
   * 说明：你不能倾斜容器。
   *
   *
   *
   * 示例 1：
   *
   *
   *
   * 输入：[1,8,6,2,5,4,8,3,7]
   * 输出：49
   * 解释：图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下，容器能够容纳水（表示为蓝色部分）的最大值为 49。
   * 示例 2：
   *
   * 输入：height = [1,1]
   * 输出：1
   * 示例 3：
   *
   * 输入：height = [4,3,2,1,4]
   * 输出：16
   * 示例 4：
   *
   * 输入：height = [1,2,1]
   * 输出：2
   *
   *
   * 提示：
   *
   * n == height.length
   * 2 <= n <= 105
   * 0 <= height[i] <= 104
   */
}
